package com.example.yx1.demo38;

import org.springframework.boot.autoconfigure.aop.AopAutoConfiguration;
import org.springframework.context.annotation.AnnotationConfigUtils;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.DeferredImportSelector;
import org.springframework.context.annotation.Import;
import org.springframework.context.support.GenericApplicationContext;
import org.springframework.core.env.SimpleCommandLinePropertySource;
import org.springframework.core.env.StandardEnvironment;
import org.springframework.core.type.AnnotationMetadata;

public class TestAopAuto {
//    public static void main(String[] args) {
//        GenericApplicationContext context = new GenericApplicationContext();
//
////        // 添加环境使配置失效
////        StandardEnvironment er = new StandardEnvironment();
////        er.getPropertySources().addLast(new SimpleCommandLinePropertySource("--spring.aop.auto=false"));
////        context.setEnvironment(er);
//        // 将一些常见的后处理器注册进工厂
//        AnnotationConfigUtils.registerAnnotationConfigProcessors(context.getDefaultListableBeanFactory());
//        // 注册了一个导入自动配置的配置类
//        context.registerBean(Config.class);
//        context.refresh();
//
//        for (String name : context.getBeanDefinitionNames()) {
//            System.out.println(name);
//        }
//    }
//
//
//    @Configuration
//    @Import(MyImportSelector.class)
//    static class Config {
//
//    }
//
//    static class MyImportSelector implements DeferredImportSelector {
//
//        @Override
//        public String[] selectImports(AnnotationMetadata importingClassMetadata) {
//            return new String[] {AopAutoConfiguration.class.getName()};
//        }
//    }
}
